package thread;

import java.util.Scanner;

//创建两个线程，一个线程调用wait,一个线程调用notify
public class Demo18 {
    //这个对象用来作为锁对象
    public static Object locker = new Object();
    public static void main(String[] args) {
        //用来等待
        Thread waitTask = new Thread(()->{
            synchronized(locker){
                System.out.println("wait 开始");
                try {
                    locker.wait();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.println("wait 结束");
            }

        });
        waitTask.start();

    //创建一个用来通知/唤醒的线程
        Thread notifyTask = new Thread(()->{
            //让用户来控制，用户输入内容之后，再执行通知
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入任意内容，开始通知");
            //next会阻塞，直到用户真正输入内容以后
            scanner.next();
            synchronized (locker){
                System.out.println("notify 开始");
                locker.notify();
                System.out.println("notify 结束");

            }

        });
        notifyTask.start();
    }
}
/*
wait 开始
请输入任意内容，开始通知
1
notify 开始
notify 结束
wait 结束
 */
